# 匿名函数:black_flag

# 应用场景：
# 1. 简化带有形参和返回值的函数定义
# 2. 某些方法（函数）需要传递一个函数作为参数时可以使用匿名函数，传入到其他方法（函数）里
#
# 使用前提：相当于普通函数有参数，普通函数有返回值场景，可以用匿名函数
# 匿名函数介绍
# 没有名字的函数,即不需要关键字def去定义,但是需要**lambda**关键字说明
# 匿名函数可以接收**任何数量**的参数,但是只**返回**一个表达式的值
# 语法格式
#
# ```Python
# 匿名函数定义,返回结果为一个值
# 变量名 = lambda 参数1,参数2,... : 表达式
# 变量名相当于普通函数的函数名
# 使用时直接用:变量名(参数1,参数2,...)

# 案例演示1
# 1.普通函数实现两个数字求和
# 定义函数
# def demo(a, b):
#     result = a + b
#     # 返回结果
#     return result
#     # 调用函数
# print(demo(10, 20))

# 2.匿名函数实现两个数字求和
result = lambda a, b: a + b
# 使用匿名函数
print(result(10, 20))

# 案例演示2【扩展案例】
# 1. 已知用户信息数据如下:
user_list = [
    {'name': '张三', 'age': 22, 'title': '测试工程师'},
    {'name': '李四', 'age': 24, 'title': '开发工程师'},
    {'name': '王五', 'age': 21, 'title': '测试工程师'}
]
# 排序:按照人的年龄信息排序
# 参数 key : 必须传入的函数，其作用是描述按照元素的哪个指标排序
# 参数 reverse ： 排序方式（升序/降序）
# 年龄指标取出来？
# 假设给我的第一个字典元素是： x = {'name': '张三', 'age': 22, 'title': '测试工程师'}
# 获取年龄指标？ x['age'] 或者 x.get("age")
# 1.需要知道字典的变量名 ‐‐> 字典名会变？ ‐‐> 变量 ‐‐> 参数
# 2.需要返回年龄的值 ‐‐> 获取年龄的表达式
# 结论：需要匿名函数实现
keys = lambda x: x.get("age")  # 这个x就是列表的每个元素
# 1.直接进行排序：升序
user_list.sort(key=keys)
# 打印原始列表
print(user_list)
# 2.降序
user_list.sort(key=keys, reverse=True)
# 打印原始列表
print(user_list)









